Analyse spatiale et territoriale

Formation Carthageo-Geoprisme 2023

Claude Grasland, Université de Paris

MOD2 : Analyse spatiale / Gradient

On se propose d’analyser la variation d’un phénomène quantitatif (le prix de vente des maisons en € par m2) en fonction de la distance à un point remarquable (le centre de l’agglomération). On fait l’hypothèse que ce prix correspond à un gradient de décroissance, conformément aux théories de la rente foncière. Pour modéliser ce gradient, nous ferons appels à un modèle de régression linéaire ou non-linéaire.

Formuler l’hypothèse

Soit l’ensemble des ventes effectuées dans un rayon de 50 km autour d’une agglomération. Existe-t-il une relation entre (Y) le prix de vente mesuré en € par m2 de surface habitable et (X) la distance au point central de l’agglomération ?

N.B. Nous retirons la commune centre de l’analyse car on suppose que son comportement interne obéit à une logique différente

Définir l’espace d’étude

Nous allons retenir la distance à vol d’oiseau entre chaque point ou a eu lieu une vente et le centre de l’agglomération que l’on fixera en fonction de notre connaissance du terrain.

# Commune centre 
codectr<-  "35238"  # Code
namectr <- "Rennes"  # Nom

# Choix du rayon de collecte des dvf (en mètres)
rayon <- 50000

# Dossier de stockage
myrep <- "data/Rennes/"

# Fichier dvf nettoyé
mydvf <-"dvf_clean.RDS"

Calculer les distances au centre

On doit ajouter à notre fichier dvf la distance au point central retenu.

## Warning: st_centroid assumes attributes are constant over geometries

Modèle linéaire

On teste l’existence d’un modèle linéaire en fixant les paramètres suivants :

Paramètres

Ajustement

## 
## Call:
## lm(formula = Y ~ X)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2309.1  -368.5   -47.0   314.5  5856.8 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2837.7774     5.9202   479.3   <2e-16 ***
## X            -45.1457     0.3075  -146.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 633.1 on 50618 degrees of freedom
## Multiple R-squared:  0.2986, Adjusted R-squared:  0.2986 
## F-statistic: 2.155e+04 on 1 and 50618 DF,  p-value: < 2.2e-16

Visualisation

Modèle exponentiel

On teste l’existence d’un modèle exponetielle en fixant les paramètres suivants :

Paramètres

Ajustement

## 
## Call:
## lm(formula = Y ~ X)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.95482 -0.14476  0.02937  0.19630  1.68254 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  7.9791861  0.0031466  2535.8   <2e-16 ***
## X           -0.0245287  0.0001635  -150.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3365 on 50618 degrees of freedom
## Multiple R-squared:  0.3079, Adjusted R-squared:  0.3079 
## F-statistic: 2.252e+04 on 1 and 50618 DF,  p-value: < 2.2e-16

Visualisation

Modèle logarithmique

On teste l’existence d’un modèle logarithmique en fixant les paramètres suivants :

Paramètres

Ajustement

## 
## Call:
## lm(formula = Y ~ X)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2820.5  -364.0   -31.8   320.7  5900.1 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3801.054     12.449   305.3   <2e-16 ***
## X           -649.871      4.559  -142.5   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 638.5 on 50618 degrees of freedom
## Multiple R-squared:  0.2864, Adjusted R-squared:  0.2864 
## F-statistic: 2.032e+04 on 1 and 50618 DF,  p-value: < 2.2e-16

Visualisation

Modèle puissance

On teste l’existence d’un modèle puissance en fixant les paramètres suivants :

Paramètres

Ajustement

## 
## Call:
## lm(formula = Y ~ X)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.13041 -0.14325  0.04097  0.20474  1.55332 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  8.467618   0.006720  1260.1   <2e-16 ***
## X           -0.339949   0.002461  -138.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3447 on 50618 degrees of freedom
## Multiple R-squared:  0.2738, Adjusted R-squared:  0.2738 
## F-statistic: 1.908e+04 on 1 and 50618 DF,  p-value: < 2.2e-16

Visualisation

Choix du meilleur modèle

On décide ici de retenir le modèle 2 (exponentiel) et de stocker les valeurs estimées et résiduelles des prix au m2.

Agrégation par commune

On agrège les valeurs estimées et résiduelles par commune

On en déduit les communes où le prix est plus bas que ce que laisserait prévoir la distance au centre :

INSEE_COM nb prixm2 prixm2_estim prixm2_resid
35281 1878 2435 2999 -564
35261 18 1085 1571 -486
35242 37 1045 1522 -476
35244 31 1093 1535 -443
35290 75 1122 1554 -432
35164 80 1164 1577 -413

Et celles où le prix est plus élevé que ce que laisserait prévoir la distance au centre

INSEE_COM nb prixm2 prixm2_estim prixm2_resid
35001 655 2401 2199 201
35069 1059 2225 2016 209
35177 486 2383 2162 222
35152 766 2200 1956 243
35047 2012 2533 2270 263
35051 1560 3134 2720 414

Cartographie des résultats

En se limitant à l’aire urbaine, on va visualiser les résultats du modèle. On commence par effectuer la jointure entre les résultats du modèle de régression et le fonds de carte des communes :

## Joining with `by = join_by(INSEE_COM)`

On peut alors cartographier les prix observés et théoriques :

Et en déduire la carte des résidus :